package com.example.demo.controller;

import com.example.demo.model.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-10-04
 * Time: 19:51
 */

@Controller
@ResponseBody //表示返回的是非静态页面的数据
@RequestMapping("/user") //类上的可以省略
public class UserController {

    @RequestMapping("/login2")
    public HashMap<String, Object> login2(String username, String password){
        HashMap<String,Object> result = new HashMap<String,Object>();
        int state = 200;
        int data = -1; //等于一 登录成功 否则登陆失败
        String msg = "未知错误";
        if (StringUtils.hasLength(username) && StringUtils.hasLength(password)){
            //同时判断null 和 空
            if (username.equals("admin") && password.equals("admin")){
                data = 1;
                msg = "";
            }else {
                msg = "用户名或密码失败!";
                //不能说的太清楚 弄得暴力破解
            }
        }else { //参数为空  方面时判了空的 但是有可能直接使用postman直接到这里
            msg = "非法参数";
        }
        result.put("state",state);
        result.put("data",data);
        result.put("msg",msg);
        return result;
    }


    @RequestMapping("/sayhi") //方法上一定要加这个注解
    //mapping 映射的意思
    public String sayHi(){
        return "你好，世界";
    }

    @RequestMapping(method = RequestMethod.POST,value = "/say")
    //指定设置访问类型的请求方式 value中放的路由
    public String say(){
        return "hell0,World";
    }
    
    @PostMapping("/sayy")
    //简单的 只支持post请求方式
    public String say1(){return "Java";}
    
    @GetMapping("/assa")
    //只支持get请求
    public String sat(){return "C++";}


    //获取参数 无非就是新创建一个类 定义好参数类型 直接就写一个参数传入
    @RequestMapping("/getuserbyid")
    //获取单个参数
    public UserInfo getUserById(Integer id){
        //不查数据库 伪代码  在地址栏中 通过queryString输入参数的值
        UserInfo userInfo = new UserInfo();
        userInfo.setId(id);
        userInfo.setUsername("张三");
        userInfo.setAge(18);
        return userInfo;
    }

    //获取多个参数 那么就写多个值
    @RequestMapping("/login")
    //参数重命名 将前端传来的name改为username
    //使用了这个注解 一定要传name值 没传就报错 若要修正 设置required = false
    public String login(@RequestParam("name") String username,String password){
        return "用户名: " + username + " | 密码: " + password;
    }

    //当参数特别多的时候 创建一个那么就spring帮我们自动匹配
    @RequestMapping("/reg")
    public String reg(@RequestBody UserInfo userInfo){
        return "用户信息：" + userInfo;
    }




}
